home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / cmail_overflow.nasl < prev    next >
Text File  |  2005-01-14  |  4KB  |  148 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(10047);
  10.  script_bugtraq_id(633);
  11.  script_cve_id("CAN-1999-1521");
  12.  script_version ("$Revision: 1.25 $");
  13.  
  14.  name["english"] = "CMail's MAIL FROM overflow";
  15.  name["francais"] = "DΘpassement de buffer dans CMail suite α la commande MAIL FROM";
  16.  script_name(english:name["english"],
  17.           francais:name["francais"]);
  18.  
  19.  desc["english"] = "
  20. There seem to be a buffer overflow in the remote SMTP server
  21. when the server is issued a too long argument to the 'MAIL FROM'
  22. command, like :
  23.  
  24.     MAIL FROM: AAA[...]AAA@nessus.org
  25.     
  26. Where AAA[...]AAA contains more than 8000 'A's.
  27.  
  28. This problem may allow an attacker to prevent this host
  29. to act as a mail host and may even allow him to execute
  30. arbitrary code on this system.
  31.  
  32.  
  33. Solution : Contact your vendor for a patch
  34.  
  35. Risk factor : High";
  36.  
  37.  
  38.  desc["francais"] = "
  39. Il semble y avoir un dΘpassement de buffer dans le
  40. serveur SMTP distant lorsque celui-ci reτoit un
  41. argument trop long a la commande 'MAIL FROM' tel
  42. que :
  43.  
  44.     MAIL FROM : AAAA[...]AAA@nessus.org
  45.     
  46. Ou AAA[...]AAAA contient plus de 8000 'A's.
  47.  
  48. Ce problΦme peut permettre α un pirate d'empecher
  49. cette machine d'agir comme un serveur de mail, et
  50. peut meme lui permettre d'executer du code arbitraire
  51. sur ce systΦme.
  52.  
  53.  
  54. Solution : informez votre vendeur de cette 
  55. vulnΘrabilitΘ et attendez un patch.
  56.  
  57. Facteur de risque : ElevΘ";
  58.  
  59.  script_description(english:desc["english"],
  60.               francais:desc["francais"]);
  61.             
  62.  
  63.  summary["english"] = "Overflows a buffer in the remote mail server"; 
  64.  summary["francais"] = "DΘpassemement de buffer dans le serveur de mail distant";
  65.  script_summary(english:summary["english"],
  66.           francais:summary["francais"]);
  67.  
  68.  script_category(ACT_MIXED_ATTACK); # mixed
  69.  
  70.  script_copyright(english:"This script is Copyright (C) 1999 Renaud Deraison",
  71.            francais:"Ce script est Copyright (C) 1999 Renaud Deraison");
  72.  
  73.  family["english"] = "SMTP problems";
  74.  family["francais"] = "ProblΦmes SMTP";
  75.  script_family(english:family["english"], francais:family["francais"]);
  76.  script_dependencie("find_service.nes", "smtpserver_detect.nasl", "tfs_smtp_overflow.nasl");
  77.  script_exclude_keys("SMTP/wrapped","SMTP/3comnbx");
  78.  script_require_ports("Services/smtp", 25);
  79.  exit(0);
  80. }
  81.  
  82. #
  83. # The script code starts here
  84. #
  85.  
  86. include("smtp_func.inc");
  87. port = get_kb_item("Services/smtp");
  88. if(!port)port = 25;
  89.  
  90.  
  91. if(safe_checks())
  92. {
  93.  banner = get_smtp_banner(port:port);
  94.   
  95.   if(banner)
  96.   {
  97.   if(egrep(pattern:"CMail Server Version: 2\.[0-4]",
  98.         string:banner))
  99.       {
  100.        alrt  = 
  101. "The remote CMail SMTP server is vulnerable to a buffer
  102. overflow that may allow anyone to execute arbitrary code
  103. on this host.
  104.  
  105. *** Nessus reports this vulnerability using only
  106. *** information that was gathered. Use caution
  107. *** when testing without safe checks enabled.
  108.  
  109. Solution : Upgrade to version 2.5 or newer
  110. Risk factor : High";
  111.  
  112.       security_hole(port:port, data:alrt);
  113.       }
  114.   }
  115.   exit(0);
  116.  }
  117.  
  118.  
  119.  
  120. if(get_port_state(port))
  121. {
  122.  key = get_kb_item(string("SMTP/", port, "/mail_from_overflow"));
  123.  if(key)exit(0); 
  124.  soc = open_sock_tcp(port);
  125.  if(soc)
  126.  {
  127.  data = smtp_recv_banner(socket:soc);
  128.  crp = string("HELO example.com\r\n");
  129.  send(socket:soc, data:crp);
  130.  data = recv_line(socket:soc, length:1024);
  131.  if("250 " >< data)
  132.  {
  133.  crp = string("MAIL FROM: ", crap(8000), "@", get_host_name(), "\r\n");
  134.  send(socket:soc, data:crp);
  135.  buf = recv_line(socket:soc, length:1024);
  136.  if(!buf){
  137.   close(soc);
  138.   soc = open_sock_tcp(port);
  139.   if(soc) s = smtp_recv_banner(socket:soc);
  140.   else s = NULL;
  141.   
  142.   if(!s) security_hole(port);
  143.   }
  144.  }
  145.  close(soc);
  146.  }
  147. }
  148.